home *** CD-ROM | disk | FTP | other *** search
- /******************************************************************************
- *
- * NSSDC/CDF CDF 'close' operations.
- *
- * Version 1.0, 14-Feb-92, ST Systems (STX)
- *
- * Modification history:
- *
- * V1.0 14-Feb-92, J Love Original version (was part of `cdflib.c').
- *
- ******************************************************************************/
-
- #include "cdflib.h"
-
- /******************************************************************************
- * CDFclo.
- ******************************************************************************/
-
- CDFstatus CDFclo (item, fnc)
- long item;
- long *fnc;
- {
- CDFstatus Pstatus = CDF_OK;
- CDFstatus Tstatus;
-
- switch (item) {
- case CDF_: {
- CDFid id;
-
- if (_CURcdf == NULL) return NO_CDF_SELECTED;
-
- Tstatus = CloseCDFfiles (_CURcdf);
- STATUSdisp (Tstatus, Pstatus);
-
- id = _CURcdf->id;
- Free_CDFid (_CURcdf);
- _CDFs[id] = NULL; /* make CDFid reusable */
- _CURcdf = NULL; /* no "current" CDF anymore */
-
- break;
- }
- case VAR_: {
- long stat;
-
- if (_CURcdf == NULL) return NO_CDF_SELECTED;
- if (_CURcdf->CURvar == NULL) return NO_VAR_SELECTED;
-
- if (bitset(_CURcdf->CDR.Flags,CDF_FORMAT_BIT))
- STATUSdisp (SINGLE_FILE_FORMAT, Pstatus)
- else
- if (_CURcdf->CURvar->status == VAR_OPENED) {
- stat = Close (_CURcdf->CURvar->fp);
- if (stat == EOF) return VAR_CLOSE_ERROR;
- _CURcdf->CURvar->status = VAR_CLOSED;
- }
- else
- STATUSdisp (VAR_ALREADY_CLOSED, Pstatus);
-
- break;
- }
- default: {
- *fnc = item;
- break;
- }
- }
- return Pstatus;
- }
-